Typically, Platform-as-a-Service (PaaS) products are optimized for productive use (such as Cloud Foundry originally developed by VMWare, Inc. company). This guarantees efficient lifecycle management, stable performance, scalability, robust security mechanism, etc. However, such optimization does not provide similar support in development scenarios. In such environments, the implementation of even a small change, e.g., even a single line of code, requires a full deployment process of the application including the change. The full deployment process requires reading, e.g., from the file system, and reinstallation of every application component, even the components without changes; wiring the different modules; resolving dependencies; etc. This significantly slows down the development of new functionalities. Testing of any changes in an application would be possible only after completion of the full application deployment process, which is inefficient from development's perspective.
Providing a platform for web based integrated development environment (WebIDE) that overcomes the above shortcomings is a real challenge. On one hand, cloud-based applications are typically deployed in corresponding dedicated containers, using the containers' file systems that are not accessible outside the containers. Thus, it is not possible to change a particular file, and hence, the deployment of a change, even to a single file, involves packaging and deployment of the complete set of application artifacts. Another limitation is that there is only one network endpoint available for accessing an application at its dedicated container. The single endpoint guarantees that the requests routed to the container will be processed by the application. However, it means that no other functionality or application deployed in the same container, e.g., for efficient deployment purposes, would be accessible. The inefficiency in development of cloud-based applications could be solved for a particular runtime environment by a proprietary, built-in solution, but this solution would not be applicable for other runtimes. For example, a built-in solution for a Java® based runtime environment will not solve the inefficient deployment for applications deployed in containers on runtime environments based on different technologies. e.g., Node.js®, Ruby®, etc.